#ifndef CAMERA_HPP_INCLUDED
#define CAMERA_HPP_INCLUDED

#include "Interfaces/IRenderable.h"

class Camera : public IRenderable
{
public:
	static Camera & GetInstance()
	{
		static Camera gameOver;
		return gameOver;
	}

     void RotateX( double x );
     void RotateY( double y );
     void MoveX( double x );
     void MoveY( double y );
     void MoveZ( double z );

     void Render();

private:
     Camera();
     ~Camera(){}
	Camera( Camera const & );
	void operator=( Camera const & );

private:
     double mXRot;
     double mYRot;
     double mX;
     double mY;
     double mZ;
};

inline Camera::Camera() 
                     : mXRot( 0.0 ),
                       mYRot( 0.0 )
{
}

inline void Camera::RotateX( double x )
{
     mXRot += x;
}

inline void Camera::RotateY( double y )
{
     mYRot += y;
}

inline void Camera::MoveX( double x )
{
}

inline void Camera::MoveY( double y )
{
}

inline void Camera::MoveZ( double z )
{
}

inline void Camera::Render()
{
     glLoadIdentity();

     glTranslatef( 0.0f, 0.0f, -6.0f );
     glRotatef( (GLfloat)mXRot, 0.0f, 1.0f, 0.0f);
     glRotatef( (GLfloat)mYRot, 1.0f, 0.0f, 0.0f);
}


#endif // CAMERA_HPP_INCLUDED